# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-06-01
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
from 神笔码靓.神笔库.神笔绘图板 import 神笔绘图板
from 神笔码靓.神笔库.定义集 import *
from 神笔码靓.神笔库.线条工具集 import *
from 神笔码靓.神笔库.配置 import *
from 神笔码靓.神笔库.通用工具集 import *


class 作文纸打印模板(神笔绘图板):
    def __init__(self, 作文纸文件路径, 方格颜色="#000000"):
        self.宽, self.高 = 纸张大小.A4_纵向()
        super(作文纸打印模板, self).__init__(作品文件路径=作文纸文件路径, 宽=self.宽, 高=self.高)
        # self.显示图框(显示网格=否)
        self.方格颜色 = 方格颜色
        # self.贴图(-405, -100, 图片文件=资源库目录("图片/作文纸.png"), 透明度=0.5, 缩放=0.59)

    def 按编号寻找位置(self, 编号, 总列数):
        第几列 = (编号 - 1) % 总列数 + 1
        第几行 = (编号 - 1) // 总列数 + 1
        return 第几列, 第几行

    def 创作(self):
        上边距, 下边距 = 50, 50
        左边距, 右边距 = 50, 50
        行分割间距 = 6
        方格行数 = 25
        方格列数 = 20
        方格行间距 = (self.高 - 下边距 - 上边距) / 方格行数
        方格列间距 = (self.宽 - 左边距 - 右边距) / 方格列数
        方格高度 = 方格行间距 - 行分割间距

        线条宽度 = 1.0

        def 字数标记(数字):
            列_, 行_ = self.按编号寻找位置(数字, 方格列数)
            self.写字(x=左边距 + 方格列间距 * 列_ - (方格列间距 / 2),
                    y=上边距 + 方格行间距 * 行_ + (行分割间距 / 1.70),
                    文字=str(数字), 字体大小=行分割间距 * 1.1,
                    字体=系统字体.Verdana, 填充颜色=self.方格颜色,
                    水平基线对齐=文字水平基线对齐.中点对齐, 垂直基线对齐=文字垂直基线对齐.中线对齐)

        字数标记(100)
        字数标记(200)
        字数标记(300)
        字数标记(400)
        字数标记(500)

        self.画水平线(x1=左边距 - 线条宽度 / 2, x2=self.宽 - 右边距 + 线条宽度 / 2,
                  y1=上边距, y2=self.高 - 下边距,
                  数量=方格行数 + 1, 描边颜色=self.方格颜色, 描边宽度=线条宽度)
        self.画水平线(x1=左边距 - 线条宽度 / 2, x2=self.宽 - 右边距 + 线条宽度 / 2,
                  y1=上边距 + 行分割间距, y2=self.高 - 下边距 + 行分割间距,
                  描边颜色=self.方格颜色, 数量=方格行数 + 1, 描边宽度=线条宽度)

        self.画垂直线(y1=上边距 + 行分割间距, y2=self.高 - 下边距 + 行分割间距, x1=左边距, x2=self.宽 - 右边距,
                  描边颜色=self.方格颜色, 数量=方格列数 + 1, 描边样式=f"{方格高度},{行分割间距}", 描边宽度=线条宽度)
        self.画垂直线(y1=上边距, y2=self.高 - 下边距 + 行分割间距, x1=左边距, x2=self.宽 - 右边距,
                  描边颜色=self.方格颜色, 数量=2, 描边宽度=线条宽度)

    def 完成(self):
        super(作文纸打印模板, self).完成()
        self.生成PDF()


def 作文纸高清图制作():
    作文纸 = 作文纸打印模板(作文纸文件路径="作文纸高清图.svg")
    作文纸.完成()


if __name__ == '__main__':
    作文纸高清图制作()
